package org.colafries.admin.entity.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.colafries.common.enums.ColumnDataTypeEnum;
import org.colafries.common.enums.ColumnTypeEnum;
import org.colafries.common.enums.Flag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * @author colafries
 * @version v1.0
 * @ClassName DataModelConfig
 * @Description 数据模型配置
 * @date Created in 2024/3/21
 **/
@Data
@TableName("t_data_model_config")
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class DataModelConfig {
    /**
     * 模型配置列id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;

    /**
     * 数据模型配置唯一值
     */
    @TableField("code")
    private String code;

    /**
     * 数据模型id
     */
    @TableField("data_model_id")
    private Integer dataModelId;
    /**
     * 自定义表id
     */
    @TableField("table_id")
    private Integer tableId;
    /**
     * 字段hash值
     */
    @TableField("field_hash")
    private String fieldHash;
    /**
     * 物理字段名
     */
    @TableField("field")
    private String field;
    /**
     * 列别名
     */
    @TableField("alias")
    private String alias;
    /**
     * 默认聚合
     */
    @TableField("default_aggregator")
    private String defaultAggregator;
    /**
     * 计算表达式
     */
    @TableField("expression")
    private String expression;
    /**
     * 是否计算的
     */
    @TableField("calculated_flag")
    private Flag calculatedFlag;
    /**
     * 字段类型
     * DataModelTypeEnum 1 维度 2 度量
     */
    @TableField("type")
    private ColumnTypeEnum type;
    /**
     * 数据类型 01 date,02 String,03 int ... ...
     */
    @TableField("data_type")
    private ColumnDataTypeEnum dataType;
    /**
     * 筛选标识 1 是 0 否
     */
    @TableField("filter_flag")
    private Flag filterFlag;

    @TableField(value = "create_time",fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    /**
     * 数据精度
     */
    @TableField(value = "accuracy")
    private Integer accuracy;
    /**
     * 数据格式
     */
    @TableField(value = "data_format")
    private String dataFormat;
    /**
     * 数据单位
     */
    @TableField(value = "unit")
    private String unit;
}
